package oopday03;
//此类是用于验证引用数据类型的测试demo
//引用类型数组与基本类型数组，有两点区别：
//  1) 给引用类型数组的元素赋值时，需要new个对象
//  2) 访问引用类型数组元素的属性/行为时，需要打点访问
public class RefArrayDemo {
    public static void main(String[] args) {
        //声明一个Dog类型名为dogs的数组，长度为3，默认值null，null，null
        //数组的小标，从0开始，0表示第一个元素
        Dog[] dogs = new Dog[3];
        dogs[0]=new Dog("小黑",2,"黑");
        dogs[1]=new Dog("小白",1,"白");
        dogs[2]=new Dog("小灰",3,"灰");
        System.out.println(dogs[0].name);   //输出第一个元素的name值
        dogs[1].age = 4;          //修改第二个元素age的值为4
        dogs[2].swim();           //调用第三个元素的swim（）方法
        //查看每个元素的地址值
        /*
        System.out.println(dogs[0]);
        System.out.println(dogs[1]);
        System.out.println(dogs[2]);
        */
        //创建Chick类型的数组，长度为2，默认值为null，null，null
        Chick[] chicks = new Chick[2];
        //数组元素赋值，每个值都是一个对象
        chicks[0]=new Chick("小花",2,"花");
        chicks[1]=new Chick("大花",2,"花");
        //输出每个元素的name值
        for (int i = 0; i < chicks.length; i++) {
            System.out.println(chicks[i].name);     //输出每个元素的name值
            chicks[i].layEggs();                    //调用每个元素的layeggs()方法
        }
        //创建Fish类型的数组，长度为4，默认值为null，null，null
        Fish[] fish = new Fish[4];
        //为数组元素赋值
        fish[0] = new Fish("小金", 1, "金");
        fish[1] = new Fish("大金", 4, "白");
        fish[2] = new Fish("小绿", 1, "绿");
        fish[3] = new Fish("小红", 3, "红");
        //使用for循环遍历数组
        for (int i = 0; i < fish.length; i++) {
            System.out.println(fish[i].color);      //输出每个元素的color方法
            fish[i].swim();                         //调用每个元素的swim()方法
        }
        //验证默认值：创建一个Dog引用类型的数组dogs2，长度为2,每个元素的默认值都是null
        Dog[] dogs2 = new Dog[2];
        for (int i = 0; i < dogs2.length; i++) {
            System.out.println(dogs2[i]);
        }

        Animal[]animals=new Animal[3];
        animals[0] = new Dog("3123",2 , "1231");
        animals[1] = new Fish("3123",2 , "1231");
        animals[2] = new Chick("3123",2 , "1231");

        for (int i = 0; i < animals.length; i++) {
            System.out.println(animals[i].name);
            animals[i].eat();
        }
    }
}
